import request from '../../utils/request';
let i = 0; // 设置一个标识符
Page({
  /**
   * 页面的初始数据
   */
  data: {
    navList: [], // 导航列表
    navId: '', // 动态id
    videoList: [],
    videoId: '', // 视频id
    videoUpdateTimeList: [], // 视频播放时间数组
    isTriggered: false // 
  },

  // 获取导航列表
  async getNavListData() {
    const result = await request('/video/group/list');
    const navList = result.data.slice(0, 14); // 只要14个
    this.setData({
      navList,
      navId: navList[0].id
    })
    this.getVideoListData(this.data.navId)
  },

  // 点击导航按钮时获取动态id
  handlerChangeNavId(e) {
    const navId = e.currentTarget.dataset.id;
    this.setData({
      navId
    })
    this.getVideoListData(this.data.navId);
  },

  // 根据菜单标签的id获取对应的视频列表数据
  async getVideoListData(navId) {
    // 设置提示对话框
    wx.showLoading({
      title: '加载中',
    })
    const videoListData = await request('/video/group', {
      id: navId
    })
    // 关闭对话框
    wx.hideLoading();
    // 关闭下拉刷新的状态
    this.setData({
      isTriggered: false
    })
    let index = 0;
    const videoList = videoListData.datas.map(item => {
      item.id = index++;
      return item;
    })

    this.setData({
      videoList
    })
  },

  // 视频播放
  handlerPlay(e) {
    i++;
    // 如果
    if (i !== 1) {
      i = 0;
      return;
    }
    const vid = e.currentTarget.id; // 取出视频id
    this.videoContext = wx.createVideoContext(vid); // 创建一个视频播放对象
    this.setData({
      videoId: vid
    });

    const {
      videoUpdateTimeList
    } = this.data;
    const videoItem = videoUpdateTimeList.find(item => item.vid === vid); // 找到点击的视频id对应的存储时间数据
    // 判断是否有内容
    if (videoItem) {
      this.videoContext.seek(videoItem.currentTime); // 从记录的时间开始播放
    }
    this.videoContext.play(); // 视频播放
  },

  // 视频播放时调用
  handlerUpdateTime(e) {
    const {
      videoUpdateTimeList
    } = this.data;
    // 创建一个时间更新的对象
    const updateTime = {
      vid: e.currentTarget.id,
      currentTime: e.detail.currentTime
    }
    const updateTimeItem = videoUpdateTimeList.find(item => item.vid === updateTime.vid); // 从数组中取出点击的这个视频对象
    // 查看数组中是否有这个对象
    if (updateTimeItem) {
      updateTimeItem.currentTime = e.detail.currentTime;
    } else {
      videoUpdateTimeList.push(updateTime);
    }

    this.setData({
      videoUpdateTimeList
    })
  },

  // 视频播放结束时调用
  handlerEnd(e) {
    const {
      videoUpdateTimeList
    } = this.data;
    videoUpdateTimeList.splice(videoUpdateTimeList.findIndex(item => item.vid === e.currentTarget.id), 1); // 把当前结束的视频从数组中删除
    this.setData({
      videoUpdateTimeList
    })
  },

  // 下拉刷新
  handlerRefresh() {
    this.getVideoListData(this.data.navId);
  },

  // 上拉加载
  handlerTolower() {
    let {
      videoList
    } = this.data;
    // 定义一个新数组包含原来的内容
    const videoArr = [
      ...videoList.slice(0, 8)
    ];
    // 判断是否为空
    if (videoArr.length) {
      videoList.push(...videoArr); // 添加数据
      this.setData({
        videoList
      })
    }
  },
  toSearch(){
    wx.navigateTo({
      url: '/pages/search/search',
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    const userInfo = wx.getStorageSync('userInfo');
    const cookie = wx.getStorageSync('cookies');
    if (!userInfo || cookie.length === 0) {
      wx.showToast({
        title: '请您先登录',
        icon: 'none',
        success: () => {
          wx.reLaunch({
            url: '/pages/login/login',
          })
        }
      })
      return;
    }

    this.getNavListData();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})